const sqlite3 = require('sqlite3').verbose();
const path = require('path');
const fs = require('fs');

// 确保数据库目录存在
const dbDir = path.join(__dirname, '..', 'data');
if (!fs.existsSync(dbDir)) {
    fs.mkdirSync(dbDir);
}

// 创建数据库连接
const db = new sqlite3.Database(path.join(dbDir, 'petmall.db'), (err) => {
    if (err) {
        console.error('数据库连接错误:', err);
    } else {
        console.log('成功连接到SQLite数据库');
        // 初始化数据库表
        const initSql = fs.readFileSync(path.join(__dirname, 'init.sql'), 'utf8');
        db.exec(initSql, (err) => {
            if (err) {
                console.error('数据库初始化错误:', err);
            } else {
                console.log('数据库初始化成功');
            }
        });
    }
});

// 封装数据库查询方法
const query = (sql, params = []) => {
    return new Promise((resolve, reject) => {
        db.all(sql, params, (err, rows) => {
            if (err) {
                reject(err);
            } else {
                resolve(rows);
            }
        });
    });
};

// 封装数据库执行方法
const run = (sql, params = []) => {
    return new Promise((resolve, reject) => {
        db.run(sql, params, function(err) {
            if (err) {
                reject(err);
            } else {
                resolve(this);
            }
        });
    });
};

module.exports = {
    query,
    run
}; 